package gestores;

import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.JFrame;
import entidades.Actividad;
import entidades.Categoria;
import entidades.Especie;
import entidades.Raza;

public final class GestorSistema {
	
	private static GestorSistema gSistema;
	private JFrame frame;
	private AdministradorBD adminBD=new AdministradorBD();

	static public GestorSistema getGestorSistema() {

        if (gSistema == null) {
            gSistema = new GestorSistema();
        }
        return gSistema;
    }
	public JFrame getFrame() {
		return frame;
	}
	public void setFrame(JFrame frame) {
		this.frame = frame;
	}

	public Vector<Especie> getEspeciesEncontradas() throws Throwable {

	Vector<Especie> especies= new Vector<Especie>();
	ResultSet rs=adminBD.getEspeciesEncontradas();
	try {
		if(rs.next()){
			do{
				Especie e= new Especie(rs.getInt("idEspecie"), rs.getString("nombreEspecie"));
				especies.add(e);
			}while(rs.next());
		}
	} catch (Throwable e) {
		e.printStackTrace();
		Throwable t= new Throwable("La consulta no se pudo realizar. Intente luego.");
		throw(t);
	}

	return especies;

}

	
	
	public Vector<Categoria> getCategoriasEncontradas() throws Throwable {
		
		Vector<Categoria> categorias= new Vector<Categoria>();
		try {
			ResultSet rs=adminBD.getCategoriasEncontradas();
			if(rs.next()){
				do{
					Categoria cat=new Categoria(rs.getInt("id"),rs.getString("especie"),rs.getString("sexo"),rs.getString("categoria"));
					categorias.add(cat);
				}while(rs.next());
			}

		} catch (Throwable e) {
			e.printStackTrace();
			Throwable t= new Throwable("La consulta no se pudo realizar. Intente luego.");
			throw(t);
		}
		return categorias;
	}
	
	public Vector<Raza> getRazasEncontradas() throws Throwable  {

		Vector<Raza> razas= new Vector<Raza>();
		try{
			ResultSet rs=adminBD.getRazasEncontradas();
			if(rs.next()){
				do{
					Raza r=new Raza(rs.getInt("id"),rs.getString("especie"),rs.getString("raza"));
					razas.add(r);
				}while(rs.next());
			}
		} catch (Throwable e) {
			e.printStackTrace();
			Throwable t= new Throwable("La consulta no se pudo realizar. Intente luego.");
			throw(t);
		}
		return razas;
	}

	public Vector<Actividad> getActividadesEncontradas() throws Throwable  {

		Vector<Actividad> actividades= new Vector<Actividad>();
		try{
			ResultSet rs=adminBD.getActividadesEncontradas(GestorUsuario.getGestorUsuario().getUsuarioActual().getIdUsuario());
			if(rs.next()){
				do{
					Actividad a= new Actividad(rs.getInt("idActividad"), rs.getString("actividad"));
					actividades.add(a);
				}while(rs.next());
			}
		} catch (Throwable e) {
			e.printStackTrace();
			Throwable t= new Throwable("La consulta no se pudo realizar. Intente luego.");
			throw(t);
		}
		return actividades;
	}

	public void registrarEspecie(String nombre) throws Throwable {
		adminBD.registrarEspecie(nombre,GestorUsuario.getGestorUsuario().getUsuarioActual().getIdUsuario());
	}
	public void registrarRaza(String raza, int idEspecie) throws Throwable {
		adminBD.registrarRaza(raza,idEspecie);
	}
	public void registrarCategoria(String categoria, String sexo, int idEspecie) throws Throwable {
		adminBD.registrarCategoria(categoria,sexo,idEspecie);
		
	}
	public void registrarActividad(String nombreActividad) throws Throwable {
		adminBD.registrarActividad(nombreActividad,GestorUsuario.getGestorUsuario().getUsuarioActual().getIdUsuario());
		
	}
	


}
